<?php
/**
  * wechat php test
  */

session_start();

//define your token
define("TOKEN", "weixin_xingfu_xueshi");
$wechatObj = new wechatCallbackapiTest();

if($_SERVER["REQUEST_METHOD"] == "GET") {
	$wechatObj->valid();
} else if($_SERVER["REQUEST_METHOD"] == "POST") {
	$wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
	public function valid()
    {
        $echoStr = $_GET["echostr"];

        //valid signature , option
        if($this->checkSignature()){
        	echo $echoStr;
        	exit;
        }

		echo "invalid request";
    }

    public function responseMsg()
    {
		//get post data, May be due to the different environments
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

      	//extract post data
		if (!empty($postStr)){
                
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
				if($postObj->MsgType == "text") {
					$keyword = trim($postObj->Content);
				} else if($postObj->MsgType == "image") {
					$keyword = trim($postObj->PicUrl);
				} else if($postObj->MsgType == "event" && $postObj->Event == "subscribe" ) {
					$keyword = "_subscribe"; // 新用户定阅消息; Added By ZH, 2013/6/22
				} else {
					$keyword = "(无法识别的消息)";
				}
				$this->saveContent("[".date("Y-m-d H:i:s")."] - [". $fromUsername ."] 发给 [". $toUsername ."] : ". $keyword);
				$time = time();
				if( $keyword == "1" ) {
					 $list[] = array('title'=>'钻研开国领袖遗产：贯彻执行党的群众路线', 'desc'=>'钻研开国领袖遗产：贯彻执行党的群众路线', 'pic'=>'http://zhouhuan.name/apps/weixin/images/1/people.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/1/xingfu_xueshi_people.php');

					 $list[] = array('title'=>'住上好房子  过上好日子', 'desc'=>'住上好房子  过上好日子', 'pic'=>'http://zhouhuan.name/apps/weixin/images/1/changeHouse.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/1/xingfu_xueshi_changeHouse.php');
					
					 $list[] = array('title'=>'学士街道公众服务进入“微时代”', 'desc'=>'学士街道公众服务进入“微时代”', 'pic'=>'http://zhouhuan.name/apps/weixin/images/1/xfxs.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/1/xingfu_xueshi_xfxs.php');
					 
					 echo $this->reponseList($fromUsername, $toUsername, $time, $list);


				} else if( $keyword == "2" ) {
					 $list[] = array('title'=>'党员奉献日 学士洁净周', 'desc'=>'党员奉献日 学士洁净周', 
					 'pic'=>'http://zhouhuan.name/apps/weixin/images/2/clear.jpg',
					 'url'=>'http://zhouhuan.name/apps/weixin/pages/2/xingfu_xueshi_clear.php');
					 
					 $list[] = array('title'=>'解读全面提高党的建设科学化水平', 'desc'=>'解读全面提高党的建设科学化水平', 'pic'=>'http://zhouhuan.name/apps/weixin/images/2/ddjs.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/2/xingfu_xueshi_ddjs.php');
					 
					 echo $this->reponseList($fromUsername, $toUsername, $time, $list);


				} else if( $keyword == "3" ) {
					 $contentStr = "现在把您的问题发上来吧！我们将第一时间为您解答。/::D";
					 echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


				}else if( $keyword == "4" ) {
                     $contentStr = "现在把您拍到的照片发上来吧！我们将马上处理。/::D";
					 echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


				}else if( $keyword == "5" ) {
					 $list[] = array('title'=>'各种避孕方法大PK 你会选哪种方法？', 'desc'=>'各种避孕方法大PK 你会选哪种方法？', 'pic'=>'http://zhouhuan.name/apps/weixin/images/5/byff.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/5/xingfu_xueshi_byff.php');

					 $list[] = array('title'=>'大部分少女不懂性生活后避孕', 'desc'=>'大部分少女不懂性生活后避孕', 'pic'=>'http://zhouhuan.name/apps/weixin/images/5/byzs.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/5/xingfu_xueshi_byzs.php');

					 $list[] = array('title'=>'常见避孕药什么时候吃最有效？', 'desc'=>'常见避孕药什么时候吃最有效？', 'pic'=>'http://zhouhuan.name/apps/weixin/images/5/byy.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/5/xingfu_xueshi_byy.php');
				
					 echo $this->reponseList($fromUsername, $toUsername, $time, $list);
					

				}else if( $keyword == "6" ) {					
                     $contentStr = "现在把您的意见或建议发上来吧！我们将尽快反馈。/::D";
					 echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);



				}else if( $keyword == "7" ) {
					  $list[] = array('title'=>'中国好声音冠军梁博考研落榜 校方申请破例录取', 'desc'=>'中国好声音冠军梁博考研落榜 校方申请破例录取', 
					 'pic'=>'http://zhouhuan.name/apps/weixin/images/7/niceSound.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/7/xingfu_xueshi_niceSound.php');
					 
					 $list[] = array('title'=>'高考作文你能得几分？', 'desc'=>'高考作文你能得几分？', 'pic'=>'http://zhouhuan.name/apps/weixin/images/7/highTest.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/7/xingfu_xueshi_highTest.php');

					 echo $this->reponseList($fromUsername, $toUsername, $time, $list);


				}else if( $keyword == "8" ) {
					 $list[] = array('title'=>'企业风采·就业帮帮帮', 'desc'=>'企业风采·就业帮帮帮', 
					 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/jybbb.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_jybbb.php');
					 
					 $list[] = array('title'=>'招聘启事（急）', 'desc'=>'招聘启事（急）', 
					 'pic'=>'http://zhouhuan.name/apps/weixin/images/8/job.jpg', 'url'=>'http://zhouhuan.name/apps/weixin/pages/8/xingfu_xueshi_job.php');
					 
					 echo $this->reponseList($fromUsername, $toUsername, $time, $list);

				}else if( $keyword == "_subscribe" ) { // 只在新用户关注时，显示主列表界面; 2013/6/22

					$this->showMainMenu($fromUsername, $toUsername, $time);

				}else if( !empty( $keyword )) { // 自定义关键字处理流程

					 if(strpos($keyword, "暂住") !== FALSE ) {
						$contentStr = "办暂住证的流程如下　：";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);

					 } else if(strpos($keyword, "独生子女") !== FALSE ) {
						$contentStr = "办独生子女证的流程如下　：";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


					 }  else if(strpos($keyword, "就业失业") !== FALSE ) {
						$contentStr = "一、《就业失业登记证》办理条件：\r\n在法定劳动年龄内，有劳动能力和就业愿望且处于无业状态下的人员，符合以下条件之一的，均可办理失业登记。\r\n1、从各类学校毕业、肆业的；\r\n2、从企业、机关、事业单位等各类用人单位失业的；\r\n3、个体工商户业主或私营业业主停业、破产停止经营的；\r\n4、承包土地被征用并符合规定条件的；\r\n5、军人退出现役且未纳入国家统一安置的；\r\n6、刑满释放、假释、监外执行或解除劳动教养的；\r\n7、农村进城务工人员及非我省户籍的劳动者在常住地稳定就业6个月后失业的；\r\n8、其他符合失业登记条件的人员。\r\n二、《就业失业登记证》办理程序：\r\n个人申请→社区初审公示→街道复审→区人力资源和社会保障局就业服务中心审核核发。";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


					 } else if(strpos($keyword, "养老保险") !== FALSE ) {
						$contentStr = "办理对象：\r\n岳麓区行政区域内年满16周岁（不含在校学生），未参加机关事业单位和城镇企业职工（含灵活就业者）基本养老保险的城乡居民。\r\n需提供的材料：\r\n1、户口簿和第二代身份证；\r\n2、属三无人员的还需要提供民政部门出具的三无人员有效证明；\r\n3、属一、二级重度残疾人员的需提供残疾证。\r\n办理程序及地点：\r\n1、参保人持以上有效材料到户口所在地的村（居）委会人力资源和社会保障服务中心办理参保登记手续；\r\n2、参保成功后可直接在指定的银行网点进行缴费；\r\n3、2010年7月1日前已年满60周岁的参保人员凭本人有效身份证在所在的村（居）委会人力资源和社会保障服务中心领取养老金存折。";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


					 }else if(strpos($keyword, "医疗保险") !== FALSE ) {
						$contentStr = "参保范围:\r\n（1）具有本市户籍年满18周岁的非从业人员（不含现役军人），在长沙居住1年以上的外来工作人员或在长沙购买房产居住1年以上的人员。\r\n（2）驻长高校在册学生。\r\n（3）驻长中小学、职业高中、中专、技校在册学生。（4）其他具有本市户籍的未成年人或具有本市准生证的新生儿。\r\n所需资料：\r\n家庭户口本、参保人员身份证。\r\n办理程序：\r\n到户口所在社区、村以家庭为单位参保登记，在长沙银行缴费后由街道劳动保障站打印城乡居民医保手册。";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


					 }else if(strpos($keyword, "小额担保贷款") !== FALSE ) {
						$contentStr = "一、年龄男60周岁、女50周岁以内，具备一定创业能力和创业条件、具有岳麓区城镇、农村居民常住户口或在岳麓区辖区内自主创业的个人，其自筹资金不足的部分，可以申请小额担保贷款。\r\n二、个人申请小额担保贷款的最高额度为10万元，贷款期限为2年，按月付息，到期一次还本。小额担保贷款利率在中国人民银行公布的贷款利率上上浮3个百分点。对个人申请小额担保贷款并从事微利项目的，按时付息还本后由中央财政具实全额贴息。\r\n三、需提交的资料：贷款申请书；还款来源和还款计划；申请人及其配偶的身份证、户口薄、户籍证明；《就业失业登记证》或高校毕业证（大学生创业证明）、复退军人证明、失地农民或返乡创业农民证明；《营业执照》或相关证明；固定的经营场地证明；结婚证或未婚证明；反担保材料、银行出具的个人信用记录。\r\n四、申请人需提供的反担保。反担保有以下两种形式，申请人可采用其中一种形式进行反担保：\r\n1、房产抵押：可用长沙内五区范围内40平方米以上的房屋作抵押（经济适用房和集体产权房除外）。申请时需提交《房屋产权证》、房主委托书、房主及配偶申明以及房主身份证、户口薄、户籍证明。\r\n2、保证人担保：由公务员、全额拨款的机关事业单位的在编工作人员或岳麓区教育局所管辖的教师进行保证担保。\r\n五、小额担保贷款申报流程：\r\n社区劳动保障服务中心→街道劳动保障管理服务站→区小额贷款担保中心→银行";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


					 }else if(strpos($keyword, "灵活就业社会保险") !== FALSE ) {
						$contentStr = "一、享受灵活就业社会保险补贴的对象：\r\n持《就业失业登记证》的就业困难对象，未与用人单位建立稳定劳动关系，灵活就业后进行了就业申报，并按规定以灵活就业人员身份参加社会保险，且履行了社会保险缴纳义务，经本人申报，可享受社会保险补贴。\r\n二、灵活就业社会保险补贴的范围和期限：\r\n1、就业困难人员灵活就业按有关规定进行灵活就业申报的，可申请基本养老保险和基本医疗保险补贴。\r\n2、持《就业失业登记证》的就业困难人员，从认定为困难对象的次月起享受补贴，补贴期限最长不超过3年。对从审批具备享受资格之日距法定退休年龄不足五年的就业困难人员灵活就业社会保险补贴可延长至法定退休年龄。\r\n三、灵活就业社会保险补贴标准：\r\n就业困难人员灵活就业基本养老保险和基本医疗保险缴费基数为全市统一规定的缴费基数，其社会保险补贴标准为：“4050”以上的人员，基本养老保险补贴为其缴费基数的12%；基本医疗保险缴费的比例低于6%的，全额补贴；缴费比例达到或超过6%的，补贴其缴费基数的6%；“4050”以下的人员，基本养老保险补贴其缴费基数的8%，基本医疗保险补贴其缴费基数的3%。\r\n四、灵活就业社会保险补贴标准：\r\n按照本人申请、社区受理、街道初审、区人力资源和社会保障局就业服务中心审核、区财政部门复核后，根据其社会保险缴费级次拨付，并实行先缴后补，按季拨付。";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);


					 }else if(strpos($keyword, "主菜单") !== FALSE ) {
					    echo $this->showMainMenu($fromUsername, $toUsername, $time);


					 }else if(strpos($keyword, "租房") !== FALSE ) {
					    $contentStr = "您好！以下是我们为您提供的详细租房信息，请您参照自己的需求进行选择！\r\n1.联丰路-84亩重建地(五啸大酒店后)  320/月\r\n1室1厅，整租，精装修，楼层：1栋1单元501室\r\n2.联丰路-84亩重建地(五啸大酒店后)  300/月\r\n1室1厅，整租，精装修，楼层：1栋1单元601室\r\n3.联丰路-84亩重建地(五啸大酒店后)  400/月\r\n1室1厅，整租，精装修，楼层：1栋2单元101室\r\n4.联丰路-84亩重建地(五啸大酒店后)  350/月\r\n1室1厅，整租，精装修，楼层：1栋2单元401室\r\n5.联丰路-84亩重建地(五啸大酒店后)  300/月\r\n1室1厅，整租，精装修，楼层：1栋2单元601室\r\n6.联丰路-84亩重建地(五啸大酒店后)  350/月\r\n1室1厅，整租，精装修，楼层：1栋3单元201室\r\n7.联丰路-84亩重建地(五啸大酒店后)  330/月\r\n1室1厅，整租，精装修，楼层：1栋3单元301室";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);

					 }else {  // 其它内容默认回应消息; Added By ZH, 2013/6/22
						$contentStr = "感谢您的留言。我们会有专人跟进处理，尽快给您回复。希望大家多提宝贵意见，谢谢您对我们工作的支持！/::D";
						echo $this->reponseText($fromUsername, $toUsername, $time, $contentStr);
					 }
					
                }else{
                	echo "Input something...";
                }

        }else {
        	echo "";
        	exit;
        }
    }


	private function showMainMenu($fromUsername, $toUsername, $time) {
		 $list[] = array('title'=>'您好，欢迎关注幸福学士!（输入数字1-8可查看对应栏目内容）', 'desc'=>'您好，欢迎关注幸福学士!（输入数字1-8可查看对应栏目简介）', 
		 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/wxpt.jpg',
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_wxpt.php');
		 
		 $list[] = array('title'=>'栏目1:动态跟踪·学士新闻潮', 'desc'=>'栏目1:动态跟踪·学士新闻潮', 
		 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/xsdt.jpg',
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_xsdt.php');
		 
		 $list[] = array('title'=>'栏目2:时代先锋·党员新风尚', 'desc'=>'栏目2:时代先锋·党员新风尚', 
		 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/dyxfs.jpg',
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_dyxfs.php');
		 
		 $list[] = array('title'=>'栏目3:关注民生·你问我来答', 'desc'=>'栏目3:关注民生·你问我来答', 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/nwwld.jpg', 
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_nwwld.php');

		 $list[] = array('title'=>'栏目4:洁净家园·随手秀街拍', 'desc'=>'栏目4:洁净家园·随手秀街拍', 
		 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/ssxjp.jpg',	 
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_ssxjp.php');
		 
		 $list[] = array('title'=>'栏目5:健康百科·教你小妙招', 'desc'=>'栏目5:健康百科·教你小妙招', 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/jnxmz.jpg', 
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_jnxmz.php');
		 
		 $list[] = array('title'=>'栏目6:聆听心声·罗书记信箱', 'desc'=>'栏目6:聆听心声·罗书记信箱', 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/lsjxx.jpg',
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_lsjxx.php');

		 $list[] = array('title'=>'栏目7:青葱校园·生活乐天派', 'desc'=>'栏目7:青葱校园·生活乐天派', 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/shltp.jpg', 
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_shltp.php');
		 
		 $list[] = array('title'=>'栏目8:企业风采·就业帮帮帮', 'desc'=>'栏目8:企业风采·就业帮帮帮', 
		 'pic'=>'http://zhouhuan.name/apps/weixin/images/head/jybbb.jpg', 
		 'url'=>'http://zhouhuan.name/apps/weixin/pages/head/xingfu_xueshi_jybbb.php');
		 echo $this->reponseList($fromUsername, $toUsername, $time, $list);
	}


	private function reponseText($fromUsername, $toUsername, $time, $contentStr) {
		$textTpl = "<xml>
			<ToUserName><![CDATA[%s]]></ToUserName>
				<FromUserName><![CDATA[%s]]></FromUserName>
				<CreateTime>%s</CreateTime>
				<MsgType><![CDATA[%s]]></MsgType>
				<Content><![CDATA[%s]]></Content>
				<FuncFlag>0</FuncFlag>
				</xml>";   
		$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, "text", $contentStr);
		return $resultStr;	
	}

	
	private function reponseList($fromUsername, $toUsername, $time, $list) {
			$textTpl = "<xml>
			 <ToUserName><![CDATA[%s]]></ToUserName>
			 <FromUserName><![CDATA[%s]]></FromUserName>
			 <CreateTime>%s</CreateTime>
			 <MsgType><![CDATA[news]]></MsgType>
			 <ArticleCount>". count($list)."</ArticleCount><Articles>";
         
			 foreach($list as $k=>$v) {
				$textTpl .= "<item>
				 <Title><![CDATA[".$v['title']."]]></Title> 
				 <Description><![CDATA[".$v['desc']."]]></Description>
				 <PicUrl><![CDATA[".$v['pic']."]]></PicUrl>
				 <Url><![CDATA[".$v['url']."]]></Url>
				 </item>";
			 }
			
			 $textTpl .= "</Articles><FuncFlag>1</FuncFlag></xml>";
			 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time);
			 return $resultStr;
	}


	private function saveContent($str) {
		$fp =  fopen("./weixin.txt","a+");
		fwrite($fp, "\r\n".$str);
		fclose($fp);
	}	


	private function checkSignature()
	{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
		$token = TOKEN;
		$tmpArr = array($token, $timestamp, $nonce);
		sort($tmpArr);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}
}

?>